<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title></title>
  </head>
  <body>
    <div id="app">
      <!-- 非顶层 Ref 对象 && Ref 对象是文本插值的最终计算值 也会自动解包 -->
      <div>{{ books[0] }}</div>
      <div>{{ map.get("count") }}</div>
      <!-- 非顶层 Ref 对象 && Ref 对象不是文本插值的最终计算值 则不会自动解包 -->
      <div>{{ books[0] + "哈哈" }}</div>
      <div>{{ map.get("count") + 2 }}</div>
    </div>

    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

    <script>
      const { createApp, ref, reactive } = Vue;

      const app = createApp({
        setup() {
          // 1. 当 ref 作为响应式数组中的元素被访问时，它不会被解包
          const books = reactive([ref("编程段子")]);
          // 这里需要 .value
          console.log(books[0].value);

          // 2. 当 ref 作为原生集合类型(如 Map) 的元素被访问时，它不会被解包
          const map = reactive(new Map([["count", ref(0)]]));
          // 这里需要 .value
          console.log(map.get("count").value);

          return {
            books,
            map,
          };
        },
      });

      app.mount("#app");
    </script>
  </body>
</html>
